<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组</title>
</head>

<body>

</body>
<script>
    {
        let arr = [10, 52, 1, 9, 64, 22, 31];
        let max = arr[0];
        for (let i = 1; i < arr.length; i++) {
            max > arr[i] ? max : max = arr[i]
        }
        console.log('数组中最大值为' + max);
    } {
        let arr = ['hello', 'html', 'css', 'javascript'];
        let str = arr[0];
        for (let i = 1; i < arr.length; i++) {
            str += ',' + arr[i];
        }
        console.log('数组转化为字符串为' + str);
    } { //数组增添内容
        let arr = ['q', 'w', 'e'];
        arr.length = 5;
        console.log(arr); //[ 'q', 'w', 'e', ,  ]
        arr[3] = 'r';
        console.log(arr); //[ 'q', 'w', 'e', 'r',  ]
    } { //筛选
        let arr = [10, 0, 98, 3, 6, 0, 49, 66, 4, 0];
        let new_arr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] != 0) {
                //new_arr[new_arr.length] = arr[i];
                new_arr.push(arr[i])

            }
        }
        console.log(new_arr); //[ 10, 98, 3, 6, 49, 66, 4 ]

    } { //数组翻转
        function reverse(arr) {
            if (arr instanceof Array) { //instanceof Array判定是否为数组是返回true反之false
                //Array.isArray(arr)与上行判定相同
                let new_arr = [];
                for (var i = arr.length - 1; i >= 0; i--) {
                    new_arr[new_arr.length] = arr[i];
                }
                return new_arr;
            } else {
                return '输入为非数组';
            }
        }
        console.log(reverse(['a', 'b', 'c', 'd'])); //[ 'd', 'c', 'b', 'a' ]
    } { //数组排序
        let arr = [6, 2, 4, 3, 5];
        for (var i = 0; i <= arr.length - 1; i++) {
            for (var j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        console.log(arr); //[ 2, 3, 4, 5, 6 ] 
    } {
        //添删数组元素
        //1.push，在数组末尾添加一个或多个元素
        let arr = [1, 2, 3];
        //arr.push(4,'code');//添加两个不同的元素
        console.log(arr.push(4, 'code')); // 5 
        console.log(arr); //[1,2,3,4,"code"]
        //(1)push是可以给数组后面追加新的元素1/
        //(2)push()参数直接写数组元素就可以了
        //(3)push完毕之后，返回的结果是新数组的长度
        //(4）原数组也会发生变化
        //2.unshift
        //arr.unshift('kq');
        console.log(arr.unshift('kq')); // 6
        console.log(arr); //["kq",1,2,3,4,"code"]
        //(1)unshift是可以给数组前面追加新的元素1/
        //(2）unshift(）参数直接写数组元素就可以了
        //(3)unshift完毕之后，返回的结果是新数组的长度
        //(4）原数组也会发生变化
        //3.pop删除数组的最后一个元素
        console.log(arr.pop()); //code
        console.log(arr); //[ 'kq', 1, 2, 3, 4  ]
        //(1)pop删除数组的最后1个元素/
        //(2）pop()不用写参数
        //(3)pop完毕之后，返回的结果是删除的元素
        //(4）原数组也会发生变化
        console.log(arr.shift()); //kq
        console.log(arr); //[1, 2, 3, 4 ]
        //(1)shift删除数组的第1个元素/
        //(2)shift()不用写参数
        //(3)shift完毕之后，返回的结果是删除的元素
        //(4）原数组也会发生变化
    } {
        //数组排序
        let arr = [5, 1, 2, 3];
        console.log(arr.reverse()); //翻转数组[ 3, 2, 1, 5 ] 
        console.log(arr.sort()); //冒泡排序[ 1, 2, 3, 5 ]
        let arr1 = [77, 21, 2, 1, 13, 4];
        console.log(arr1.sort()); //[ 1, 13, 2, 21, 4, 77 ] sort排序的弊端，会按第一位大小排序
        arr1.sort(function (a, b) {
            return a - b; //升序（b-a)降序
        })
        console.log(arr1);
    } {
        //s数组转化为字符串
        let arr = [1, "a", 2, "b", 3, "c"];
        console.log(arr.toString()); //1,a,2,b,3,c
        console.log(arr.join("->")); //1->a->2->b->3->c
    } {
        //数组检索（字符串也可用此方法
        let arr = ["q", "w", "e", "w", "w"];
        console.log(arr.indexOf("w")); //返回1  *如果数组中存在参数值则返回第一个参数所在的索引位置，如果数组中没有参数值则返回-1
        console.log(arr.lastIndexOf("w")); //返回3  *返回最后一个参数所在位置的索引，么有则返回-1
        console.log(arr.indexOf("w", arr.indexOf("w") + 1)); //返回3 逗号后数据为起始查找的位置
        //查询字符出现的位置及次数
        var index = arr.indexOf("w");
        var arrt = [];
        var times = 0;
        while (index !== -1) {
            arrt.push(index);
            index = arr.indexOf("w", index + 1);
            times++;
        }
        console.log("w出现的次数为" + times + "出现的位置为" + arrt.toString());
    } {
        //数组去重
        let arr = ["a", "b", "c", "b", "d", "a", "e"];
        let unique = [];
        for (var i = 0; i < arr.length; i++) {
            if (unique.indexOf(arr[i]) === -1) {
                unique.push(arr[i])
            }
        }
        console.log(unique);
    } {
        // 1.charAt(index)根据位置返回字符
        var str = "code";
        console.log(str.charAt(3)); //e 
        for (var i = 0; i < str.length; i++) { //遍历所有的字符
            console.log(str.charAt(i));
        }
        // 2. charCodeAt(index)返回相应索引号的字符ASCII值目的:判断用户按下了那个键
        console.log(str.charCodeAt(0)); //99
    } {
        var str = 'qlzqkcqzckqlkzkclqkq';
        var more = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i);
            if (more[chars]) {
                more[chars]++;
            } else {
                more[chars] = 1;
            }
        }
        console.log(more); //{ q: 6, l: 3, z: 3, k: 5, c: 3 }
        var max = 0;
        var ch = '';
        for (var k in more) {
            if (more[k] > max) {
                max = more[k];
                ch = k;
            }
        }
        console.log(ch + "最多，出现了" + max + "次"); //6 
    } {
        //substr截取字符
        let str = 'coooool';
        console.log(str.substr(0, 4)); //cooo,从第0个字符开始，取四个字符长度
        while (str.indexOf('o') !== -1) {
            str = str.replace('o', '*');
        }
        console.log(str); //c*****l，吧o替换为*
        //字符串转化为数组
        var str1 = 'a,b,c';
        console.log(str1.split(',')); //['a', 'b', 'c'],括号中的参数取决于字符串的分割元素
        var str2 = 'a&b&c';
        console.log(str2.split('&')); //['a', 'b', 'c']
    }
</script>

</html>